﻿//начало текста модуля
&НаКлиенте
Перем Ванесса;

&НаКлиенте
Функция ДобавитьШагВМассивТестов(МассивТестов,Снипет,ИмяПроцедуры,ПредставлениеТеста = Неопределено,Транзакция = Неопределено,Параметр = Неопределено)
	Структура = Новый Структура;
	Структура.Вставить("Снипет",Снипет);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ПредставлениеТеста",ПредставлениеТеста);
	Структура.Вставить("Транзакция",Транзакция);
	Структура.Вставить("Параметр",Параметр);
	МассивТестов.Добавить(Структура);
КонецФункции

&НаКлиенте
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
	Ванесса = КонтекстФреймворкаBDD;
	
	ВсеТесты = Новый Массив;

	//описание параметров
	//ДобавитьШагВМассивТестов(ВсеТесты,Снипет,ИмяПроцедуры,ПредставлениеТеста,Транзакция,Параметр);

	ДобавитьШагВМассивТестов(ВсеТесты,"ВМетаданныхЕстьСправочник(Парам01Строка)","ВМетаданныхЕстьСправочник","в метаданных есть Справочник ""Справочник1""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЯУдаляюВсеЭлементыСправочника(Парам01Строка)","ЯУдаляюВсеЭлементыСправочника","я удаляю все элементы Справочника ""Справочник1""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеНетЭлементовСправочника(Парам01Строка)","ВБазеНетЭлементовСправочника","в базе нет элементов Справочника ""Справочник1""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЯСоздаюСамОдинЭлементСправочника(Парам01Строка)","ЯСоздаюСамОдинЭлементСправочника","я создаю сам один элемент справочника ""Справочник1""");
	ДобавитьШагВМассивТестов(ВсеТесты,"ВБазеПоявилсяХотяБыОдинЭлементСправочника(Парам01Строка)","ВБазеПоявилсяХотяБыОдинЭлементСправочника","В базе появился хотя бы один элемент справочника ""Справочник1""");

	Возврат ВсеТесты;
КонецФункции

&НаКлиенте
Процедура ПередНачаломСценария() Экспорт
	
КонецПроцедуры

&НаКлиенте
Процедура ПередОкончаниемСценария() Экспорт
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВМетаданныхЕстьСправочникСервер(ВидСправочника)
	Нашел = Ложь;
	Для каждого Элем Из Метаданные.Справочники Цикл
		Имя = Элем.Имя;
		Если НРег(Имя) = НРег(ВидСправочника) Тогда
			Нашел = Истина;
			Прервать;
		КонецЕсли;	 
	КонецЦикла;
	
	Возврат Нашел; 
КонецФункции	

&НаКлиенте
//в метаданных есть Справочник "Справочник1"
//@ВМетаданныхЕстьСправочник(Парам01Строка)
Процедура ВМетаданныхЕстьСправочник(ВидСправочника) Экспорт
	Нашел = ВМетаданныхЕстьСправочникСервер(ВидСправочника);
	
	Ванесса.ПроверитьРавенство(Нашел,Истина,"В метаданных есть вид справочника " + ВидСправочника);
КонецПроцедуры


&НаСервереБезКонтекста
Процедура ЯУдаляюВсеЭлементыСправочникаСервер(ВидСправочника)
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Справочник1.Ссылка
		|ИЗ
		|	Справочник.Справочник1 КАК Справочник1";

		
	Запрос.Текст = СтрЗаменить(Запрос.Текст,"Справочник1",ВидСправочника);	
	Результат = Запрос.Выполнить();

	
	ВыборкаДетальныеЗаписи = Результат.Выбрать();

	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		СпрОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
		СпрОбъект.Удалить();
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
//я удаляю все элементы Справочника "Справочник1"
//@ЯУдаляюВсеЭлементыСправочника(Парам01Строка)
Процедура ЯУдаляюВсеЭлементыСправочника(ВидСправочника) Экспорт
	ЯУдаляюВсеЭлементыСправочникаСервер(ВидСправочника);
КонецПроцедуры


&НаСервереБезКонтекста
Функция ВБазеНетЭлементовСправочникаСервер(ВидСправочника)
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Справочник1.Ссылка) КАК КолЭлементов
		|ИЗ
		|	Справочник.Справочник1 КАК Справочник1";

	Запрос.Текст = СтрЗаменить(Запрос.Текст,"Справочник1",ВидСправочника);	
	Результат = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = Результат.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Возврат ВыборкаДетальныеЗаписи.КолЭлементов;
	КонецЦикла;
КонецФункции	

&НаКлиенте
//в базе нет элементов Справочника "Справочник1"
//@ВБазеНетЭлементовСправочника(Парам01Строка)
Процедура ВБазеНетЭлементовСправочника(ВидСправочника) Экспорт
	КолЭлементов = ВБазеНетЭлементовСправочникаСервер(ВидСправочника);
	Ванесса.ПроверитьРавенство(КолЭлементов,0,"Не должно быть элементов");
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЯСоздаюСамОдинЭлементСправочникаСервер(ВидСправочника)
	СпрОбъект = Справочники[ВидСправочника].СоздатьЭлемент();
	СпрОбъект.Наименование = "Созданный элемент 1";
	СпрОбъект.Записать();
КонецПроцедуры

&НаКлиенте
//я создаю сам один элемент справочника "Справочник1"
//@ЯСоздаюСамОдинЭлементСправочника(Парам01Строка)
Процедура ЯСоздаюСамОдинЭлементСправочника(ВидСправочника) Экспорт
	ЯСоздаюСамОдинЭлементСправочникаСервер(ВидСправочника);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВБазеПоявилсяХотяБыОдинЭлементСправочникаСервер(ВидСправочника)
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Справочник1.Ссылка) КАК КолЭлементов
		|ИЗ
		|	Справочник.Справочник1 КАК Справочник1";

	Запрос.Текст = СтрЗаменить(Запрос.Текст,"Справочник1",ВидСправочника);	
	Результат = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = Результат.Выбрать();

	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Возврат ВыборкаДетальныеЗаписи.КолЭлементов;
	КонецЦикла;
КонецФункции	

&НаКлиенте
//В базе появился хотя бы один элемент справочника "Справочник1"
//@ВБазеПоявилсяХотяБыОдинЭлементСправочника(Парам01Строка)
Процедура ВБазеПоявилсяХотяБыОдинЭлементСправочника(ВидСправочника) Экспорт
	КолЭлементов = ВБазеПоявилсяХотяБыОдинЭлементСправочникаСервер(ВидСправочника);
	Ванесса.ПроверитьНеРавенство(КолЭлементов,0,"В базе должны быть элементы");
КонецПроцедуры

//окончание текста модуля